home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / validation / NodePatternInput.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  2.6 KB  |  105 lines

  1. package com.extensibility.validation;
  2.  
  3. import com.extensibility.dom.DOMUtilities;
  4. import com.extensibility.util.StringUtilities;
  5. import com.extensibility.util.regexpr.PatternInput;
  6. import java.util.NoSuchElementException;
  7. import org.w3c.dom.Node;
  8.  
  9. class NodePatternInput implements PatternInput {
  10.    protected Node parent;
  11.    protected Node curChild;
  12.    protected Node lastChild;
  13.    protected String curToken;
  14.    protected boolean isOpen;
  15.    protected String defaultNS;
  16.    protected String patternNS;
  17.    protected Node leadInChild;
  18.    protected String candidate;
  19.  
  20.    public NodePatternInput(Node var1, boolean var2, String var3) {
  21.       this.isOpen = var2;
  22.       this.parent = var1;
  23.       this.defaultNS = var3;
  24.       this.patternNS = DOMUtilities.getNodeNamespace(var1, (Node)null, var3);
  25.       this.curChild = this.skipWhitespace(var1.getFirstChild());
  26.       this.curToken = this.nodeToToken(this.curChild);
  27.    }
  28.  
  29.    public NodePatternInput(Node var1, Node var2, boolean var3, String var4) {
  30.       this(var1, var3, var4);
  31.       this.lastChild = var2;
  32.       if (var2 == null) {
  33.          this.curChild = null;
  34.          this.curToken = null;
  35.       }
  36.  
  37.    }
  38.  
  39.    public NodePatternInput(Node var1, Node var2, String var3, boolean var4, String var5) {
  40.       this(var1, var4, var5);
  41.       this.leadInChild = var2;
  42.       this.candidate = var3;
  43.    }
  44.  
  45.    public String nodeToToken(Node var1) {
  46.       if (var1 == null) {
  47.          return null;
  48.       } else {
  49.          return var1.getNodeType() != 3 && var1.getNodeType() != 4 ? DOMUtilities.getNodeFullName(var1, (Node)null, this.defaultNS) : "#PCDATA";
  50.       }
  51.    }
  52.  
  53.    public String peekNext() {
  54.       if (this.curToken == null) {
  55.          throw new NoSuchElementException();
  56.       } else {
  57.          return this.curToken;
  58.       }
  59.    }
  60.  
  61.    public String next() {
  62.       String var1 = this.peekNext();
  63.       if (this.lastChild == this.curChild) {
  64.          this.curChild = null;
  65.          this.curToken = null;
  66.       } else if (this.curChild == this.leadInChild) {
  67.          this.leadInChild = null;
  68.          this.curToken = DOMUtilities.getNameFullName(this.parent, this.candidate, this.defaultNS);
  69.       } else {
  70.          this.curChild = this.skipWhitespace(this.curChild.getNextSibling());
  71.          this.curToken = this.nodeToToken(this.curChild);
  72.       }
  73.  
  74.       return var1;
  75.    }
  76.  
  77.    public boolean hasNext() {
  78.       return this.curToken != null;
  79.    }
  80.  
  81.    Node peekNextNode() {
  82.       if (this.curChild == null) {
  83.          throw new NoSuchElementException();
  84.       } else {
  85.          return this.curChild;
  86.       }
  87.    }
  88.  
  89.    String getPatternNS() {
  90.       return this.patternNS;
  91.    }
  92.  
  93.    Node skipWhitespace(Node var1) {
  94.       return skipWhitespace(var1, this.defaultNS, this.patternNS);
  95.    }
  96.  
  97.    static Node skipWhitespace(Node var0, String var1, String var2) {
  98.       while(var0 != null && (var0.getNodeType() == 8 || var0.getNodeType() == 7 || (var0.getNodeType() == 3 || var0.getNodeType() == 4) && (var0.getNodeValue() == null || StringUtilities.isWhitespace(var0.getNodeValue())))) {
  99.          var0 = var0.getNextSibling();
  100.       }
  101.  
  102.       return var0;
  103.    }
  104. }
  105.